public class ThreadDemo {
    // 线程是抢占式执行的
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
               for (int i = 0 ;i < 3 ; i++){
                   System.out.println("hello");
                   try {
                       Thread.sleep(1000);
                   } catch (InterruptedException e) {
                       throw new RuntimeException(e);
                   }
               }
            }
        },"MyThread");
       // thread.setDaemon(true);  // 当把这个设置为后台线程的时候，会发现运行结果直接结束了
        // 此时的进程的结束与否 就和 thread无关了，具体什么时候结束就要看其他的线程是否结束了，在这里面是main线程
        // 在前面加一个setDaemon方法就变成后台线程了
        thread.start();
        while(true){
            System.out.println(thread.isAlive());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        // 主线程执行完start方法之后 紧接着就结束了main方法，对于主线程来说，main方法执行完了，自己也就没了

        // 在这里面run执行完之后 内核里的pcb就释放了。操作系统里的线程也就没了
        // 但是thread这个对象还在
        // 只有 当引用不指向这个对象的时候才会被GC回收
    }
}
